//路由鉴权:鉴权,项目当中路由能不能被的权限的设置(某一个路由什么条件下可以访问、什么条件下不可以访问)
import router from '@/router'

//获取用户相关的小仓库内部token数据,去判断用户是否登录成功
import useUserStore from '@/stores/module/user.js'

//全局前置守卫
router.beforeEach(async (to, _from, next) => {
  const userStore = useUserStore()
  const token = userStore.token
  const name = userStore.name
  const account = userStore.account

  // 如果 token 存在并且有效
  if (token && token !== 'undefined') {
    // 登录成功,访问login,不能访问,指向首页
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      try {
        // 如果 name 或 account 未加载，加载用户信息
        if (!name || !account) {
          await userStore.userInfo()
        }

        // 再次获取加载后的 name 和 account
        const updatedName = userStore.name
        const updatedAccount = userStore.account

        // 检查账户权限
        if (to.path === '/admin' && updatedAccount !== 'Wcadmin1') {
          // 如果账户不是 'Wcadmin1' 且试图访问 /admin，重定向到首页或其他页面
          next({ path: '/' })
        } else {
          // 放行
          next()
        }
      } catch (error) {
        // 如果加载用户信息失败（例如 token 过期），则登出并跳转到登录页面
        await userStore.userLogout()
        next({ path: '/login', query: { redirect: to.path } })
      }
    }
  } else {
    // 如果没有 token 或 token 无效
    if (to.path === '/login' || to.path === '/') {
      next()
    } else {
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})

//全局后置守卫
router.afterEach(() => {})
